自定义注解验证枚举类型的值
使用场景:在前后端分离的开发中,如果后端的一个参数对应的是一个枚举类型的值,前端是无法传递枚举值的。
只能通过与后端约定好的格式进行传递。比如后端定义枚举BooleanEumn:1 -> 是,0 -> 否。
但如果前端不按照约定传参,比如传值2,就会发生错误。
此时,可以通过自定义BeanValidation的注解来校验枚举值。需要指定枚举类和校验的方法即可。
自定义注解
- 要求校验方法是静态方法(反射无法调用枚举的实例方法)。如果想使用实例方法也行,需要修改反射的invoke方法。
静态方法:Boolean result = (Boolean)method.invoke(null, value);
实例方法:Boolean result = (Boolean)method.invoke(enumClass.newInstance(), value
- 原则上校验值的类型要和校验方法的类型一致,都为包装类型。但在Validator中做了兼容,如果存在普通类型形参的校验方法,也可以被调用。
枚举类:
1 | public enum BooleanEnum { |
自定义校验注解:使用内部类的方式实现Validator
1 | /** |
使用:
1 |
|